1. Field of the Invention
The present invention relates generally to 3-dimensional graphics accelerator. More particularly, the invention relates to a 3-dimensional graphics accelerator that effectively distributes pixel data to a plurality of pixel shaders from a rasterizer.
2. Description of the Related Art
The rapid development of computer hardware and software components enables real-time rendering of 3-dimensional (3D) appearing images (or 3D graphics) in an increasing variety of applications. A number of different data processing techniques have been employed in the rendering of ever more lifelike #D images. Various texture mapping techniques are an excellent example. Texture mapping techniques allow the rendering of more detailed 3D graphics without significantly increasing the number of geometric operations underlying the rendering process. Generally speaking, texture mapping is a technique that replaces pixel data generated by a graphics engine with textured data (e.g., a number of polygons). This replacement produces images having more fine and realistic looking detail.
The term “texture” in this context generally relates to an illustrated 3D object's surface look. Without one or more textures, a 3D object could only be illustrated as naked polygon frame. Textures provide visual detail and impression of reality to the object. A brick wall, a reptile skin, or a reflective metal surface may all be effectively rendered using texture mapping techniques. In general application, many 3D rendering applications include a function that allows the definition and storage of one or more textures later applied to structural frame of an object (e.g., a polygon).
The term “polygon” in this context referred to a 2-dimensional (2D) pattern (e.g., a triangle or rectangle) forming at least a portion of a 3D object. Several hundreds or thousands of polygons are usually necessary to construct the frame of a 3D object.
Texture mapping techniques generally proceed by mapping screen space associated with an object into a texture space, and then filtering the screen space to determine the colors of pixels within the mapped screen space. A pixel within texture space, (sometimes referred to as a texture element of “texel”) may not always correspond one-for-one with an image pixel. Consider two examples in this regard. In the first example, several texels correspond to a single image pixel. This relationship is referred to as a scale-down. In the second example, one texel corresponds to more than one image pixels. This relationship is referred to as a magnification. In both of these examples, filtering of the screen space is carried out in order to reduce aliasing effects that may otherwise occur. Thus, filtering is a general technique used to enhance the quality of the texture applied to an object. In effect, filtering improves the mapping source from screen space to texture space. Filtering in several different implementations is used, for example, in MIP mapping techniques.
For the foregoing, it can be understood that the term texel refers to one or more image pixels within a bitmap graphic image associated with one or more textures applied to a polygonal frame of some size and shape.
In practical application, many texturing engines (i.e., a collection of related software routines and related hardware resources) are conventionally available to contemporary users. Many different textures within various formats and sizes are provided by conventional texturing engines.
Of further note, the rendering of 3D graphics is generally accomplished by rendering an object using one or more polygons and then performing a rasterization process by a scan order for each polygon. Most contemporary 3D graphics applications and accelerators utilize a pipelined approach to data processing. Data pipelining, or more particularly “graphics pipelining” is a well understood technique, whereby a stream of operations is organized in the pipeline to improve execution efficiency.
In one related data processing approach, a texture cache is used as an intermediate data storage location between the texturing engine and an external memory storing data associated with the current graphics rendering application. As is well understood with regard to data caches and their use in data processing platforms, data access speed may be greatly enhanced by increasing the access “hit rate” to data stored in the intermediate texture cache. Not surprisingly, the hit rate to the texture cache is regarded as an important factor in determining the overall performance characteristics of a 3D graphics accelerator.
In a conventional 3D graphics accelerator, pixel data generated by a rasterizer is distributed across a plurality of pixel shaders in a defined mode making reference to the image X/Y coordinates of the corresponding pixels. In other words, pixel data generated by the rasterizer is distributed across multiple pixel shaders using the coordinate values of the corresponding pixels. Conventional pixel distribution from the rasterizer proceeds accordingly without other recourse and has become an increasing impediment to emerging 3D graphics accelerator designs, as greater complexity in the generated graphics tends to drive down the hit rate to the texture cache and extending rendering time.